<?php
include_once "clase.php";
define ("GRUPO","8");
class Grupo extends base{
	private $minimo;

	//public function __construct($usuario,$password){
	public function __construct(){
		//parent::__construct($usuario,$password,"grupos");
		parent::__construct("grupos");
		$this->minimo=9;
	}
	/*pre:
	 *pos:obtiene el menor nivel que tiene el usuario de la lista
	 */
	private function Cacular_menor($listadodegrupos){
		$min=$listadodegrupos[1];
		for ($i=2;$i<=$listadodegrupos[0];$i++){
			if ($listadodegrupos[$i]<$min)
				$min=$listadodegrupos[$i];
		}
	}
	/*pre:
	 *pos:devuelve un vector con las descripciones de los grupos*/
	public function nombre_de_grupos($listadegrupos){
		$descripciones=array();
		$cadena = 'id_grupo='.$listadegrupos[0];
		$size_grupos= count($listadegrupos);
		for ($i=1;$i< $size_grupos;$i++){
			$cadena.=' OR id_grupo='.$listadegrupos[$i];
		}
		$resultado=mysql_query('SELECT descripcion FROM grupos WHERE '.$cadena.' ORDER BY id_grupo;');
		try{
			if (!$resultado)throw new Exception("ERROR en consulta de grupos".mysql_error());
			$i=0;
			while ($consulta=mysql_fetch_row($resultado)){
				$descripciones[$i]=$consulta[0];
				$i++;
			}
			return $descripciones;
		}
		catch(Exception $e){
			die($e->getMessage());
		}
	}
	//ver tema de subgrupos
	public function nombreDeGruposySubgrupos ($listadoConSubgrupos) {
		$listadegruposdelusuario=array();
		$cantidadDeSubgruposxGrupo=array();
		$listadodelosSubgrupos=array();
		$longitud=count($listadoConSubgrupos);
		$index=1;
		while($index <= GRUPO) {
			if (in_array($index,$listadoConSubgrupos)){
				$posicionDelGrupo=array_search($index,$listadoConSubgrupos);
				if ($listadoConSubgrupos[$posicionDelGrupo+1]!=0){
					$cantidadDeSubgrupos=count($listadoConSubgrupos[$posicionDelGrupo+1]);
					array_push($cantidadDeSubgruposxGrupo,$cantidadDeSubgrupos);
					$subgrupos=$listadoConSubgrupos[$posicionDelGrupo+1];
					$subgrupo=current($subgrupos);
					array_push($listadodelosSubgrupos,$subgrupo);
					while ($subgrupo=next($subgrupos))
						array_push($listadodelosSubgrupos,$subgrupo);
					array_push($listadegruposdelusuario,$index);
				}
				else{
					//array_push($listadodelosSubgrupos,0);
					array_push($cantidadDeSubgruposxGrupo,0);
					array_push($listadegruposdelusuario,$index);
				}
			}
			$index++;
		}
		$numerosdeGrupos=array_values($listadegruposdelusuario);
		/*$listadodelosSubgrupos=array_values($listadodelosSubgrupos);
		$cuantasposiciones=count($posicionesDeLosGrupos);
		$index = 0;
		for (; $index < $cuantasposiciones-1; $index++) {
			$posicionesDeLosGrupos[$index]=$posicionesDeLosGrupos[$index+1]-$posicionesDeLosGrupos[$index]-1;
		}
		$posicionesDeLosGrupos[$index]=$longitud-$posicionesDeLosGrupos[$index]-1;
*/
		$descripciones=array();
		$cadena = 'id_grupo='.$listadegruposdelusuario[0];
		$size_grupos= count($listadegruposdelusuario);
		for ($i=1;$i< $size_grupos;$i++)
			$cadena.=' OR id_grupo='.$listadegruposdelusuario[$i];

		$resultado=mysql_query('SELECT descripcion FROM grupos WHERE '.$cadena.' ORDER BY id_grupo');
		try{
			if (!$resultado)throw new Exception("ERROR en consulta de grupos".mysql_error());
			while ($consulta=mysql_fetch_row($resultado))
				array_push($descripciones,$consulta[0]);


			array_splice($listadegruposdelusuario,0,count($listadegruposdelusuario));
			$listadegruposdelusuario=$descripciones;

			$descripciones=array();
			$cadena = '"'.$listadodelosSubgrupos[0].'"';
			$size_grupos= count($listadodelosSubgrupos);
			for ($i=1;$i< $size_grupos;$i++)
				$cadena.=',"'.$listadodelosSubgrupos[$i].'"';

			$resultado=mysql_query('SELECT id_subgrupo,descripcion FROM subgrupos WHERE id_subgrupo IN ('.$cadena.')');
			if (!$resultado)throw new Exception("ERROR en consulta de grupos".mysql_error());
			while ($consulta=mysql_fetch_row($resultado))
				array_push($descripciones,$consulta[0],$consulta[1]);

			$cantidaDesubgrupos=count($listadodelosSubgrupos);
			$index=0;
			$listaAux=array();
			while ($index<$cantidaDesubgrupos){
				$posicion=array_search($listadodelosSubgrupos[$index],$descripciones);
				array_push($listaAux,$descripciones[$posicion+1]);
				$index++;
			}
			$listadodelosSubgrupos=$listaAux;
			unset($descripciones);
			unset($listaAux);

			$gruposPrincipales=count($listadegruposdelusuario);
			$listadeSalida=array();
			for ($index = 0; $index < $gruposPrincipales; $index++) {
				array_push($listadeSalida,current($listadegruposdelusuario));
				$cantidaDesubgrupos=$cantidadDeSubgruposxGrupo[$index];
				if (current($numerosdeGrupos)<=2){
					array_push($listadeSalida,0);
					next($numerosdeGrupos);
				}
				else{
					$arraydeSubgrupos=array();
					for ($j = 0; $j < $cantidaDesubgrupos; $j++){
						array_push($arraydeSubgrupos,current($listadodelosSubgrupos));
						next($listadodelosSubgrupos);
					}
					array_push($listadeSalida,$arraydeSubgrupos);
					next($numerosdeGrupos);
				}
				next($listadegruposdelusuario);
			}

			return $listadeSalida;

		}
		catch(Exception $e){
			die($e->getMessage());
		}
	}

	/*pre:
	 *pos:lista los grupos donde pertence el usuario
	 */
	public function Listados_de_grupos($listadegrupos,$cantidadamostrar){
		$consulta=$this->nombre_de_grupos($listadegrupos);
		for($i=0;$i<$cantidadamostrar;$i++){
			$id_grupo=md5($listadegrupos[$i]);
			echo "\t".'<a href="sistema.php?login='.$id_grupo.'" disabled="true">'.$consulta[$i].'</a><br>'."\n";
		}
	}

	public function obtenerGruposySubgrupos ($clavedebusqueda) {
		$consulta='SELECT id_grupo,id_subgrupo FROM usuario_grupo WHERE legajo='.$clavedebusqueda.' ORDER BY id_grupo';
		$listadeGruposySubgrupos=array();
		$listaAuxiliardeSubgrupos=array();
		$resultadodeconsulta=mysql_query($consulta);
		if (!$resultadodeconsulta)throw new Exception("ERROR al obtener los grupos y subgrupos");
		while ($listaobtenida=mysql_fetch_row($resultadodeconsulta)){
			$grupo=$listaobtenida[0];
			$subgrupo=$listaobtenida[1];
			if (($grupo==1)||($grupo==2))array_push($listadeGruposySubgrupos,$grupo,$subgrupo);
			else{
				if (!in_array($grupo,$listadeGruposySubgrupos)){
					if (empty($listaAuxiliardeSubgrupos)) {
						array_push($listadeGruposySubgrupos,$grupo);
						array_push($listaAuxiliardeSubgrupos,$subgrupo);
					}
					else{
						array_push($listadeGruposySubgrupos,$listaAuxiliardeSubgrupos);
						array_splice($listaAuxiliardeSubgrupos,0,count($listaAuxiliardeSubgrupos));
						array_push($listadeGruposySubgrupos,$grupo);
						array_push($listaAuxiliardeSubgrupos,$subgrupo);
					}
				}
				else{
					array_push($listaAuxiliardeSubgrupos,$subgrupo);
				}
			}
		}
		array_push($listadeGruposySubgrupos,$listaAuxiliardeSubgrupos);
		return ($listadeGruposySubgrupos);
	}
}
